var PluginArray = function PluginArray() {
    //如果不能new  要抛出一个错误
    throw new TypeError("Illegal constructor");
}//构造函数
catvm.safefunction(PluginArray); //tostring 保护
//内存存储  为了保护非全局函数
catvm.memory.PluginArray.iterator = function values() {
    debugger;

};
catvm.safefunction(catvm.memory.PluginArray.iterator); //tostring 保护

//设置原型链上显示的名字***************************************************************************
Object.defineProperties(PluginArray.prototype, {
    [Symbol.toStringTag]: {
        value: "PluginArray",
        configurable: true
    },
    [Symbol.iterator]: {
        value: catvm.memory.PluginArray.iterator,
        configurable: true
    }
});

//该环境下的属性和方法***************************************************************************
PluginArray.prototype.length = 0;
PluginArray.prototype.item = function item(i) {
    // debugger;
    return this[i]
};
catvm.safefunction(PluginArray.prototype.item);
PluginArray.prototype.namedItem = function namedItem(i) {
    // debugger;
    return this[i]
};
catvm.safefunction(PluginArray.prototype.namedItem);
PluginArray.prototype.refresh = function refresh() {
    debugger;
};
catvm.safefunction(PluginArray.prototype.refresh);

//new出来的实例在没有继承的情况下获取是报错情况
for (var pluginKey in PluginArray.prototype) {
    if (typeof (PluginArray.prototype[pluginKey]) != 'function') {
        PluginArray.prototype.__defineGetter__(pluginKey, function () {
            throw new TypeError("Illegal constructor");
        })
    }
}
catvm.memory.PluginArray._ = {};
if (catvm.memory.PluginArray.temp !== undefined) {
    for (let i = 0; i < catvm.memory.PluginArray.temp.length; i++) {
        var plugintemp = catvm.memory.Plugin.new(catvm.memory.PluginArray.temp[i]);
        catvm.memory.PluginArray._[i] = plugintemp;
        Object.defineProperty(catvm.memory.PluginArray._, plugintemp.name, {
            value: plugintemp
        })
    }
    catvm.memory.PluginArray._.length = catvm.memory.PluginArray.temp.length;
}

catvm.memory.PluginArray._.__proto__ = PluginArray.prototype;
catvm.memory.PluginArray._ = catvm.proxy(catvm.memory.PluginArray._);

navigator.plugins = catvm.memory.PluginArray._


